/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ppsa.dao;

import com.ppsa.bean.AsignacionBean;
import com.ppsa.bean.ResultadoBean;
import java.sql.DriverManager;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;

/**
 *
 * @author AdminTdp
 */
public class AsignacionDao extends AccesoDao {

    static final Logger m_log = Logger.getLogger(AsignacionDao.class.getName());

    public AsignacionDao() throws AccesoDaoException {
        super();
    }

    public List<AsignacionBean> listarAsignacion(String strpv_codigoReunion) throws Exception {
        List<AsignacionBean> lstL_asignacion = new ArrayList<AsignacionBean>();


        AsignacionBean objL = null;
        try {
            //this.objPt_conn = objPt_dataSource.getConnection();
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_listarAsignacion(?) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);
            objPt_cstmt.setInt(1, Integer.parseInt(strpv_codigoReunion));
            objPt_rs = objPt_cstmt.executeQuery();
            while( objPt_rs.next() ) {
                objL = new AsignacionBean();
                
                objL.setStrpv_codigoAsignacion(objPt_rs.getString("ID_ASIGNACION"));
                objL.setStrpv_codigoReunion(objPt_rs.getString("ID_REUNION"));
                objL.setStrpv_nombreAsignacion(objPt_rs.getString("NOMBRE"));
                objL.setStrpv_descripcionAsignacion(objPt_rs.getString("DESCRIPCION"));
                objL.setStrpv_fechaPlazo(objPt_rs.getString("FECHA_PLAZO"));
                objL.setStrpv_estadoAsignacion(objPt_rs.getString("ESTADO"));


                lstL_asignacion.add(objL);
            }
        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }

        return lstL_asignacion;
    }

     public List<AsignacionBean> listarAsignacionDetalle() throws Exception {
        List<AsignacionBean> lstL_asignacion = new ArrayList<AsignacionBean>();


        AsignacionBean objL = null;
        try {
            //this.objPt_conn = objPt_dataSource.getConnection();
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_listarAsignacionDetalle() }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);
            //objPt_cstmt.setInt(1, Integer.parseInt(strpv_codigoReunion));
            objPt_rs = objPt_cstmt.executeQuery();
            while( objPt_rs.next() ) {
                objL = new AsignacionBean();
                
                objL.setStrpv_codigoAsignacion(objPt_rs.getString("ID_ASIGNACION"));
                objL.setStrpv_codigoReunion(objPt_rs.getString("ID_REUNION"));
                objL.setStrpv_nombreReunion(objPt_rs.getString("NOMBRE_REUNION"));
                objL.setStrpv_nombreAsignacion(objPt_rs.getString("NOMBRE"));
                objL.setStrpv_descripcionAsignacion(objPt_rs.getString("DESCRIPCION"));
                objL.setStrpv_fechaPlazo(objPt_rs.getString("FECHA_PLAZO"));
                objL.setStrpv_numPersona(objPt_rs.getString("NUM_PERSONA"));
                objL.setStrpv_estadoAsignacion(objPt_rs.getString("ESTADO"));


                lstL_asignacion.add(objL);
            }
        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }

        return lstL_asignacion;
    }
    public AsignacionBean obtenerAsignacion(String strpv_codigoAsignacion) throws Exception {
        
        AsignacionBean objL_asignacion  = new AsignacionBean();
        try {
            //this.objPt_conn = objPt_dataSource.getConnection();
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_obtenerAsignacion(?) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);
            objPt_cstmt.setInt(1, Integer.parseInt(strpv_codigoAsignacion));
            objPt_rs = objPt_cstmt.executeQuery();
            while( objPt_rs.next() ) {
                objL_asignacion.setStrpv_codigoAsignacion(objPt_rs.getString("ID_ASIGNACION"));
                objL_asignacion.setStrpv_codigoReunion(objPt_rs.getString("ID_REUNION"));
                objL_asignacion.setStrpv_nombreAsignacion(objPt_rs.getString("NOMBRE"));
                objL_asignacion.setStrpv_descripcionAsignacion(objPt_rs.getString("DESCRIPCION"));
                objL_asignacion.setStrpv_fechaPlazo(objPt_rs.getString("FECHA_PLAZO"));
                objL_asignacion.setStrpv_estadoAsignacion(objPt_rs.getString("ESTADO"));
                objL_asignacion.setStrpv_lstUsuario(objPt_rs.getString("LST_USUARIO"));
            }
        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }
        return objL_asignacion;
    }

    public Integer actualizarAsignacion(AsignacionBean objA_Asignacion) throws Exception {
        m_log.info("[actualizarAsignacion] << ENTER");

        Integer intL_temp = -1;
        Integer intL_resultado = -1;

        try {
            //this.objPt_conn = objPt_dataSource.getConnection();
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_actualizarAsignacion( ?,?,?,?,?  ,?,?,? ) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);

            if( objA_Asignacion.getStrpv_codigoAsignacion() != null && objA_Asignacion.getStrpv_codigoAsignacion().trim().length() > 0 ) {
                intL_temp = Integer.parseInt(objA_Asignacion.getStrpv_codigoAsignacion());
            }
            objPt_cstmt.setInt(1, intL_temp);
            objPt_cstmt.setInt(2, Integer.parseInt(objA_Asignacion.getStrpv_codigoReunion()));
            objPt_cstmt.setString(3, objA_Asignacion.getStrpv_nombreAsignacion());
            objPt_cstmt.setString(4, objA_Asignacion.getStrpv_descripcionAsignacion());
            objPt_cstmt.setString(5, objA_Asignacion.getStrpv_fechaPlazo());
            objPt_cstmt.setString(6, objA_Asignacion.getStrpv_lstUsuario());
            objPt_cstmt.setString(7, objA_Asignacion.getStrpv_estadoAsignacion());
            objPt_cstmt.registerOutParameter(8, java.sql.Types.INTEGER );

            objPt_cstmt.execute();

            intL_resultado = objPt_cstmt.getInt(8);

        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }
        m_log.info("[actualizarAsignacion] >> EXIT");
        return intL_resultado;
    }

    public Integer eliminarAsignacion(String strpv_codigoAsignacion) throws Exception {
        m_log.info("[eliminarAsignacion] << ENTER");
        Integer intL_resultado = -1;
        ResultadoBean objResultado = new ResultadoBean();
        try {
            //this.objPt_conn = objPt_dataSource.getConnection();
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_eliminarAsignacion(?) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);
            objPt_cstmt.setInt(1, Integer.parseInt(strpv_codigoAsignacion));
            objPt_cstmt.execute();

        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }
        m_log.info("[eliminarAsignacion] >> EXIT");
        return intL_resultado;
    }

}
